package com.mark.spring.config;

import com.mark.spring.bean.Person;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;

/**
 * Created by Choisaaaa on 2018/7/10.
 * 测试Bean的作用域
 */
@Configuration
public class MyPersonConfig2 {

    /**
     * @see ConfigurableBeanFactory#SCOPE_PROTOTYPE  prototype （多例） 每次返回不同的对象，在获取对象的时候才会自动创建
     * @see ConfigurableBeanFactory#SCOPE_SINGLETON singleton (单例)在IOC启动的时候已经创建对象放到容器中了
     * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST request
     * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION session
     * @return
     */

    @Bean
    //@Scope(value = "prototype")
    //针对于单例的作用域，对象的实例化是在IOC容器启动的时候完成的，但是我们可以通过懒加载的方式来设置当第一次使用对象的时候才会实例化对象
    @Lazy
    public Person person(){
        return new Person("mark",23);
    }

}
